#include "Tris.h"
#include <stdio.h>

int field [3][3];

void clear()
{
	int k=0;
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
		{
			field[i][j]=k;
			k++;
		}
	}
}


void printLayout()
{

	system("CLS");
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
		{
			if(j==0){
				cout <<" ";
			}
			if(field[i][j]==10){
				cout <<"X";
			}else{
				if(field[i][j]==11){
					cout <<"O";
				}else{
					cout << field[i][j];
				}
			}
			if(j<2){
				cout <<" | ";
			}
		}
		if(i<2){
			cout << "\n";
			cout << "-----------";
			cout << "\n";
		}
	}
}

int control()
{
	bool end=true;
	bool X=false;
	bool O=false;
	int nX=0;
	int nO=0;
	for(int i=0;i<3;i++)//righe
	{
		for(int j=0;j<3;j++)
		{
			if(field[i][j]==10){
				nX++;
			}
			if(field[i][j]==11){
				nO++;
			}
			if(nX==3){
				X=true;
			}
			if(nO==3){
				O=true;
			}
		}
		nX=0;
		nO=0;
	}
	for(int j=0;j<3;j++)//colonne
	{
		for(int i=0;i<3;i++)
		{
			if(field[i][j]==10){
				nX++;
			}
			if(field[i][j]==11){
				nO++;
			}
			if(nX==3){
				X=true;
			}
			if(nO==3){
				O=true;
			}
		}
		nX=0;
		nO=0;
	}
	int j=0;               //diagonale+
	for(int i=0;i<3;i++)
	{
		j++;
		if(field[i][j]==10){
			nX++;
		}
		if(field[i][j]==11){
			nO++;
		}
		if(nX==3){
			X=true;
		}
		if(nO==3){
			O=true;
		}
	}
	j=2;               //diagonale-
	for(int i=2;i>=0;i--)
	{
		j--;
		if(field[i][j]==10){
			nX++;
		}
		if(field[i][j]==11){
			nO++;
		}
		if(nX==3){
			X=true;
		}
		if(nO==3){
			O=true;
		}
	}

	for(int i=0;i<3;i++) //pieno
	{
		for(int j=0;j<3;j++)
		{
			if(field[i][j]<9){
				end=false;
			}
		}
	}
	if(X){
		return 1;
	}else{
		if(O){
			return 2;
		}else{
			if(end){
				return 0;
			}else{
				return 3;
			}
		}
	}

}

void pl1()
{
	cout << "\n";
	cout << "\n";
	bool ok=false;
	while(!ok){
		int scel;
		cout<<"PL1(X) Select the box:";
		cin >>scel;
		if(scel<9 && scel>=0 && field[scel/3][scel%3]<9){
			field[scel/3][scel%3]=10;
			ok=true;
		}else{
			ok==false;
		}
	}
}

void pl2()
{
	cout << "\n";
	cout << "\n";
	bool ok=false;
	while(!ok){
		int scel=0;
		cout<<"PL2(O) Select the box:";
		cin >>scel;
		if(scel<9 && scel>=0 && field[scel/3][scel%3]<9){
			field[scel/3][scel%3]=11;
			ok=true;
		}else{
			ok=false;
		}
	}
}


int main()
{
	clear();
	printLayout();
	bool gameOver=false;
	int i=0;
	int flag=3;
	while(!gameOver)
	{
		if(i%2==0){
			pl1();
		}else{
			pl2();
		}	
		i++;
		printLayout();
		flag=control();
		if(flag==1){
			cout << "\n";
			cout <<"PL1 WIN!!!!";
			gameOver=true;
		}else{
			if(flag==2){
				cout << "\n";
				cout <<"PL1 WIN!!!!";
				gameOver=true;
			}else{
				if(flag==0){
					cout << "\n";
					cout <<"<<<<<PAIR>>>>>";
					gameOver=true;
				}
			}
		}
	}
	while(true){}
}

Tris::Tris(void)
{
}


Tris::~Tris(void)
{
}
